package com.wenli.youkumenudemo.utils;

import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.RotateAnimation;
import android.widget.RelativeLayout;

/**
 * @author andong
 * 动画工具类
 */
public class AnimUtils {

    public static int runningAnimationCount = 0; // 运行中动画的数量, 默认为: 0

    /**
     * 开始执行出去的动画
     * @param view 被执行动画的对象
     * @param startOffset 动画延迟的时间
     */
    public static void startOutRotateAnimation(RelativeLayout view, long startOffset) {
        // 在开始执行出去的动画之前, 需要把所有的按钮置为不可用. 放置菜单已经出去了, 但是按钮还可以点击.
        for (int i = 0; i < view.getChildCount(); i++) {
            view.getChildAt(i).setEnabled(false); // 置为不可用
        }

        RotateAnimation ra = new RotateAnimation(
                0, -180,
                Animation.RELATIVE_TO_SELF, 0.5f,  // 控件宽度的一半
                Animation.RELATIVE_TO_SELF, 1); // 控件整个高度
        ra.setDuration(500); // 动画执行时间为: 500毫秒
        ra.setFillAfter(true); // 设置动画停留在动画结束的状态下.
        ra.setStartOffset(startOffset); // 设置动画开始执行延迟的时间.
        ra.setAnimationListener(new MyAnimationListener());
        view.startAnimation(ra); // 执行动画
    }

    /**
     * 开始执行进入的动画
     * @param view 被执行动画的对象
     * @param startOffset 动画延迟的时间
     */
    public static void startInRotateAnimation(RelativeLayout view, long startOffset) {
        // 把按钮置为可用
        for (int i = 0; i < view.getChildCount(); i++) {
            view.getChildAt(i).setEnabled(true); // 置为可用
        }

        RotateAnimation ra = new RotateAnimation(
                -180, 0,
                Animation.RELATIVE_TO_SELF, 0.5f,  // 控件宽度的一半
                Animation.RELATIVE_TO_SELF, 1); // 控件整个高度
        ra.setDuration(500); // 动画执行时间为: 500毫秒
        ra.setFillAfter(true); // 设置动画停留在动画结束的状态下.
        ra.setStartOffset(startOffset);
        ra.setAnimationListener(new MyAnimationListener());
        view.startAnimation(ra); // 执行动画
    }

    static class MyAnimationListener implements AnimationListener {

        @Override
        public void onAnimationStart(Animation animation) {
            runningAnimationCount++;
        }

        @Override
        public void onAnimationEnd(Animation animation) {
            runningAnimationCount--;
        }

        @Override
        public void onAnimationRepeat(Animation animation) {

        }

    }
}
